package com.it.entity.insure;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 投保单表
 * </p>
 *
 * @author yzy
 * @since 2025年09月17日
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("ai_insure_order")
public class AiInsureOrder implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 投保单唯一ID
     */
    @TableId(value = "order_id", type = IdType.AUTO)
    private Integer orderId;

    /**
     * 保单编号
     */
    @TableField("policy_id")
    private String policyId;

    /**
     * 关联投保人ID
     */
    @TableField("insured_id")
    private String insuredId;

    /**
     * 险种名称
     */
    @TableField("insurance_coverage_name")
    private String insuranceCoverageName;

    /**
     * 投保项目（作物/动物）
     */
    @TableField("insurance_subject")
    private String insuranceSubject;

    /**
     * 承保面积（亩，仅种植业）
     */
    @TableField("coverage_area")
    private BigDecimal coverageArea;

    /**
     * 承保数量（头/只，仅养殖业）
     */
    @TableField("coverage_quantity")
    private Integer coverageQuantity;

    /**
     * 单位保额（元）
     */
    @TableField("unit_insured")
    private BigDecimal unitInsured;

    /**
     * 总保额（元）
     */
    @TableField("sum_insured")
    private BigDecimal sumInsured;

    /**
     * 总保费（元）
     */
    @TableField("total_premium")
    private BigDecimal totalPremium;

    /**
     * 保险起期
     */
    @TableField("start_date")
    @JsonFormat(pattern = "yyyy-MM-dd") // 明确指定解析格式（避免全局配置差异
    private LocalDate startDate;

    /**
     * 保险止期
     */
    @TableField("end_date")
    @JsonFormat(pattern = "yyyy-MM-dd") // 明确指定解析格式（避免全局配置差异
    private LocalDate endDate;

    /**
     * 缴费状态（1-待缴费，2-缴费中，3-缴费成功，4-缴费失败）
     */
    @TableField("pay_status")
    private Integer payStatus;

    /**
     * 保单状态（1-待生效，2-已生效，3-已退保，4-已过期）
     */
    @TableField("policy_status")
    private Integer policyStatus;

    /**
     * 投保业务员
     */
    @TableField("insure_user")
    private String insureUser;

    /**
     * 投保时间
     */
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 缴费成功时间
     */
    @TableField("pay_time")
    private LocalDateTime payTime;


}
